/* * generated by Xtext */ package org.occiware.clouddesigner.occi.xtext.serializer; import com.google.inject.Inject; import com.google.inject.Provider; import org.eclipse.emf.common.util.BasicEMap.Entry; import org.eclipse.emf.ecore.EAnnotation; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EEnum; import org.eclipse.emf.ecore.EEnumLiteral; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor; import org.eclipse.xtext.serializer.acceptor.SequenceFeeder; import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider; import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor; import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer; import org.eclipse.xtext.serializer.sequencer.GenericSequencer; import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider; import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer; import org.eclipse.xtext.serializer.sequencer.ITransientValueService; import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient; import org.occiware.clouddesigner.occi.Action; import org.occiware.clouddesigner.occi.Attribute; import org.occiware.clouddesigner.occi.AttributeState; import org.occiware.clouddesigner.occi.Configuration; import org.occiware.clouddesigner.occi.Extension; import org.occiware.clouddesigner.occi.Kind; import org.occiware.clouddesigner.occi.Link; import org.occiware.clouddesigner.occi.Mixin; import org.occiware.clouddesigner.occi.OCCIPackage; import org.occiware.clouddesigner.occi.Resource; import org.occiware.clouddesigner.occi.xtext.services.OCCIGrammarAccess; @SuppressWarnings("all") public abstract class AbstractOCCISemanticSequencer extends AbstractDelegatingSemanticSequencer { @Inject private OCCIGrammarAccess grammarAccess; @Override public void createSequence(EObject context, EObject semanticObject) { if(semanticObject.eClass().getEPackage() == EcorePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) { case EcorePackage.EANNOTATION: sequence_DataTypeAnnotations(context, (EAnnotation) semanticObject); return; case EcorePackage.EDATA_TYPE: sequence_DataTypeDecl(context, (EDataType) semanticObject); return; case EcorePackage.EENUM: sequence_EnumTypeDecl(context, (EEnum) semanticObject); return; case EcorePackage.EENUM_LITERAL: sequence_EnumLiteralDecl(context, (EEnumLiteral) semanticObject); return; case EcorePackage.ESTRING_TO_STRING_MAP_ENTRY: sequence_DataTypeAnnotation(context, (Entry<?, ?>) semanticObject); return; } else if(semanticObject.eClass().getEPackage() == OCCIPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) { case OCCIPackage.ACTION: sequence_ActionDecl(context, (Action) semanticObject); return; case OCCIPackage.ATTRIBUTE: if(context == grammarAccess.getAttributeDeclRule()) { sequence_AttributeDecl(context, (Attribute) semanticObject); return; } else if(context == grammarAccess.getParameterDeclRule()) { sequence_ParameterDecl(context, (Attribute) semanticObject); return; } else break; case OCCIPackage.ATTRIBUTE_STATE: sequence_StateDecl(context, (AttributeState) semanticObject); return; case OCCIPackage.CONFIGURATION: sequence_ConfigurationDecl(context, (Configuration) semanticObject); return; case OCCIPackage.EXTENSION: sequence_ExtensionDecl(context, (Extension) semanticObject); return; case OCCIPackage.KIND: sequence_KindDecl(context, (Kind) semanticObject); return; case OCCIPackage.LINK: sequence_LinkDecl(context, (Link) semanticObject); return; case OCCIPackage.MIXIN: sequence_MixinDecl(context, (Mixin) semanticObject); return; case OCCIPackage.RESOURCE: sequence_ResourceDecl(context, (Resource) semanticObject); return; } if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context)); } /** * Constraint: * (term=ID (attributes+=ParameterDecl attributes+=ParameterDecl*)? title=STRING?) */ protected void sequence_ActionDecl(EObject context, Action semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * ( * mutable?='mutable'? * required?='required'? * name=QualifiedID * type=[EDataType|QualifiedID] * multiple_values?='*'? * default=STRING? * description=STRING? * ) */ protected void sequence_AttributeDecl(EObject context, Attribute semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (use+=[Extension|STRING]* resources+=ResourceDecl*) */ protected void sequence_ConfigurationDecl(EObject context, Configuration semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * ( * (key='minExclusive' value=Integer) | * (key='minInclusive' value=Integer) | * (key='maxExclusive' value=Integer) | * (key='maxInclusive' value=Integer) | * (key='totalDigits' value=PositiveInteger) | * (key='fractionDigits' value=PositiveInteger) | * (key='length' value=PositiveInteger) | * (key='minLength' value=PositiveInteger) | * (key='maxLength' value=PositiveInteger) | * (key='whiteSpace' value=STRING) | * (key='pattern' value=STRING) * ) */ protected void sequence_DataTypeAnnotation(EObject context, Entry<?, ?> semanticObject) { genericSequencer.createSequence(context, (EObject)semanticObject); } /** * Constraint: * details+=DataTypeAnnotation+ */ protected void sequence_DataTypeAnnotations(EObject context, EAnnotation semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (name=ID instanceClassName=STRING eAnnotations+=DataTypeAnnotations?) */ protected void sequence_DataTypeDecl(EObject context, EDataType semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * name=ID */ protected void sequence_EnumLiteralDecl(EObject context, EEnumLiteral semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (name=ID eLiterals+=EnumLiteralDecl eLiterals+=EnumLiteralDecl*) */ protected void sequence_EnumTypeDecl(EObject context, EEnum semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (name=ID scheme=STRING import+=[Extension|STRING]* (kinds+=KindDecl | mixins+=MixinDecl | types+=DataTypeDecl | types+=EnumTypeDecl)*) */ protected void sequence_ExtensionDecl(EObject context, Extension semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (term=ID parent=[Kind|QualifiedID]? title=STRING? (attributes+=AttributeDecl | actions+=ActionDecl)*) */ protected void sequence_KindDecl(EObject context, Kind semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (id=STRING kind=[Kind|QualifiedID] (mixins+=[Mixin|QualifiedID] mixins+=[Mixin|QualifiedID]*)? target=[Resource|STRING] attributes+=StateDecl*) */ protected void sequence_LinkDecl(EObject context, Link semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * ( * term=ID * (depends+=[Mixin|QualifiedID] depends+=[Mixin|QualifiedID]*)? * (applies+=[Kind|QualifiedID] applies+=[Kind|QualifiedID]*)? * scheme=STRING? * title=STRING? * (attributes+=AttributeDecl | actions+=ActionDecl)* * ) */ protected void sequence_MixinDecl(EObject context, Mixin semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (name=QualifiedID type=[EDataType|QualifiedID] multiple_values?='*'? default=STRING?) */ protected void sequence_ParameterDecl(EObject context, Attribute semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (id=STRING kind=[Kind|QualifiedID] (mixins+=[Mixin|QualifiedID] mixins+=[Mixin|QualifiedID]*)? attributes+=StateDecl* links+=LinkDecl*) */ protected void sequence_ResourceDecl(EObject context, Resource semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (name=QualifiedID value=STRING) */ protected void sequence_StateDecl(EObject context, AttributeState semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, OCCIPackage.Literals.ATTRIBUTE_STATE__NAME) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OCCIPackage.Literals.ATTRIBUTE_STATE__NAME)); if(transientValues.isValueTransient(semanticObject, OCCIPackage.Literals.ATTRIBUTE_STATE__VALUE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OCCIPackage.Literals.ATTRIBUTE_STATE__VALUE)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getStateDeclAccess().getNameQualifiedIDParserRuleCall_1_0(), semanticObject.getName()); feeder.accept(grammarAccess.getStateDeclAccess().getValueSTRINGTerminalRuleCall_3_0(), semanticObject.getValue()); feeder.finish(); } }